A software development lifecycle for an application typically proceeds in stages. In a development stage, programmers design and write the application's code. In a testing stage, programmers and/or other individuals (e.g., quality assurance engineers, end users subscribed to a beta program, etc.) test the application to determine whether it operates as expected. In a staging stage, the application is deployed to a staging environment that fully or approximately replicates a production (‘live’) environment. Additional testing may be performed in the staging environment. In a production stage, the application is ‘live’, i.e., accessible to the intended end users. Some software development lifecycles may include more or fewer stages than those described above. Two or more software development stages may operate simultaneously. For example, while an application is already live in a production environment, developers may work on fixes and/or upgrades to the application in a development environment.
During a software development lifecycle, data may be copied or migrated from one software development stage to another. As an example, when an application goes live, data may be migrated from a staging environment to a production environment. As another example, data may be migrated from a production environment to a non-production environment (e.g., development, testing, staging, and/or any other non-production environment). Data may be migrated between different instances of the same application that are configured to execute, respectively, in the different environments corresponding to the different software development stages.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.